Q. 클로저의 예시를 들고 과정을 설명하세요.
🧑🏻💻 Answer.
✅ 코드 예시
function outer() {
var outerVar = 10;
function inner() {
console.log(outerVar); // outerVar는 클로저로서 접근 가능
}
return inner;
}
var closureFunc = outer(); // outer 함수 실행 후 inner 함수 반환
closureFunc(); // inner 함수 실행
outer
함수가 호출됩니다. 이때outerVar
변수가 선언되고 값 10이 할당됩니다.inner
함수가outer
함수 내에서 정의됩니다.- 이때
inner
함수는outer
함수의 스코프를 객체의 내부 슬롯[[Enviroment]] 에 저장하여 클로저를 형성합니다. 이를 통해inner
함수는outerVar
변수에 접근할 수 있습니다.
- 이때
inner
함수가closureFunc
변수에 할당됩니다.closureFunc
변수에 할당된inner
함수가 호출됩니다.- 이때
inner
함수는outer
함수의 스코프에 있는outerVar
변수에 접근하고 값을 출력합니다.
- 이때
- 이처럼 클로저는 함수가 호출된 후에도 함수가 선언된 스코프의 변수에 접근할 수 있습니다.